<?php

class UsersVideosController extends AppController{

    public $uses = array('UsersVideo', 'VideosTrick', 'VideosTutorial', 'VideosEditing');
    
    /**
     *  Consulter une vidéo
     * @param type $videoId 
     */
    public function view($videoId){
        /**
         * Poster un commentaire sur la vidéo
         */
        if (!empty($this->request->data['UsersVideosComment'])){
            $data = $this->request->data['UsersVideosComment'];
            $data['users_id'] = $this->getCurrentUserId();
            $data['users_videos_id'] = $videoId;
            $data['posted_on'] = date('Y-m-d h:m:d');

            if ($this->UsersVideo->UsersVideosComment->save($data)){
                $this->Session->setFlash('Commentaire ajouté');
            }
        }
        /**
         * Poster un conseil sur la vidéo
         */
        if (!empty($this->request->data['VideosAdvicesAnswer'])){
            $data = $this->request->data['VideosAdvicesAnswer'];
            $data['users_id'] = $this->getCurrentUserId();
            $data['videos_advices_id'] = $videoId;
            $data['posted_on'] = date('Y-m-d h:m:d');

            if ($this->UsersVideo->VideosAdvice->VideosAdvicesAnswer->save($data)){
                $this->Session->setFlash('Conseil ajouté');
            }
            else{
                $this->Session->setFlash('Erreur, le conseil n\'a pu être ajouté. Réessayer plus tard.');                
            }
        }

        /**
         * Récupération des données
         */       

        // TODO Les notes

        // TODO Les nombre de vue

        // La vidéo
        $infos_advice = $this->UsersVideo->find('first',array('conditions' => array('UsersVideo.id' => $videoId
         )));
        $this->set('description', $infos_advice['VideosAdvice']['description']);

        $data = $this->UsersVideo->getVideos('first', array(
            'conditions' => array(
                'UsersVideo.id' => $videoId
            ),
            'recursive' => 0
        ));

        $this->set('video', $data);
    }

    /**
    *   Edition d'une vidéo qui appartient a l'utilisateur
    * @param type $videoId 
    */ 
    public function edit_video($videoId){
        $this->layout = 'home';
        // Récupération des données postées : 
        if (!empty($this->request->data['VideosEditing'])){
            $data = $this->request->data['VideosEditing'];
            $data['users_videos_id'] = $videoId;            
            if ($this->VideosEditing->save($data)){
                 $this->UsersVideo->changeUsersVideoType('VideosEditing', $videoId);
                 $this->Session->setFlash('Sauvegarde effectué.');  
                //$this->redirect(array('action' => 'myVideos', 'controller' => 'users'));
            }              
            else{
                $this->Session->setFlash('La publication n\'a pu être faite, réessayer plus tard.');  
            }
        }
        else if (!empty($this->request->data['VideosTrick'])){
            $isSaved = !empty($this->request->data['VideosTrick']['users_videos_id']);

            $data = $this->request->data['VideosTrick'];
            $data['users_videos_id'] = $videoId;    

            if ($isSaved){
                if ($this->VideosTrick->save($data)){
                     $this->UsersVideo->changeUsersVideoType('VideosTrick', $videoId);
                     $this->Session->setFlash('Sauvegarde effectué.');  
                    //$this->redirect(array('action' => 'myVideos', 'controller' => 'users'));                
                }
                else{               
                    $this->Session->setFlash('La publication n\'a pu être faite, réessayer plus tard.');  
                }
            }              
            else{
                $oldPk = $this->VideosTrick->primayKey;
                $this->VideosTrick->primayKey = 'id';
                if ($this->VideosTrick->save($data)){
                    $this->Session->setFlash('Cette vidéo est maintenant publié en tant que figure');
                 //$this->redirect(array('action' => 'myVideos', 'controller' => 'users'));                    
                }
                else{
                    $this->Session->setFlash('Aucune sauvegarde n\'a pu être faite, réessayer plus tard.');  
                }
                $this->VideosTrick->primayKey = $oldPk;
            }   

        }
        else if (!empty($this->request->data['VideosTutorial'])){
            $isSaved = !empty($this->request->data['VideosTutorial']['users_videos_id']);

            $data = $this->request->data['VideosTutorial'];
            $data['users_videos_id'] = $videoId;    

            if ($isSaved){
                if ($this->VideosTutorial->save($data)){
                     $this->UsersVideo->changeUsersVideoType('VideosTutorial', $videoId);
                     $this->Session->setFlash('Sauvegarde effectué.');  
                    //$this->redirect(array('action' => 'myVideos', 'controller' => 'users'));                
                }
                else{               
                    $this->Session->setFlash('La publication n\'a pu être faire, réessayer plus tard.');  
                }
            }              
            else{
                $oldPk = $this->VideosTutorial->primayKey;
                $this->VideosTutorial->primayKey = 'id';
                if ($this->VideosTutorial->save($data)){
                    $this->Session->setFlash('Cette vidéo est maintenant publié en tant que tutoriel');
                 //$this->redirect(array('action' => 'myVideos', 'controller' => 'users'));                    
                }
                else{
                    $this->Session->setFlash('Aucune sauvegarde n\'a pu être faire, réessayer plus tard.');  
                }
                $this->VideosTutorial->primayKey = $oldPk;
            }   
        }

        $video = $this->UsersVideo->getVideos('first', array(
            'conditions' => array(
                'UsersVideo.id' => $videoId
            )
        ));

        /**
         * TODO : a automatiser avec une boucle
         */
        if (!empty($video['VideosTutorial'])){
            $this->request->data = array(
                'VideosTutorial' => $video['VideosTutorial']
            );
        }
        else if (!empty($video['VideosEditing'])){
            $this->request->data = array(
                'VideosEditing' => $video['VideosEditing']
            );
        }
        else if (!empty($video['VideosTrick'])){
            $this->request->data = array(
                'VideosTrick' => $video['VideosTrick']
            );            
        }

       $this->set('video', $video);


       // TODO Changer suivant le sport de la vidéo
       $this->set('listTricks', $this->getListTricks(3));       
       $this->set('listModules', $this->getListModules(3));
    }

    
    /**
     *  Recherche d'une vidéo
     *  Critère de recherche :
     *  => Nom de figure
     *  => Ordonné par hasard, date, note, nombre de vue
     * 
     * Besoin d'une fct de recherche par type de vidéo
     */
    public function search(){
        
    }
    
    /**
     *  Recherche d'un tutorial
     *  TODO
     */
    public function search_tutorial(){
        if (!empty($this->request->data)){
            $data = $this->request->data;
            $valSearch = $data['UsersVideo']['valSearch'];
            $this->UsersVideo->bindModelType('VideosTutorial');
            $results = $this->VideosTutorial->find('all', array(
                'conditions' => array(
                    'UsersVideo.title LIKE' => '%'.$valSearch.'%',
                    'UsersVideo.type' => 'VideosTutorial'
                )
            ));
            
            $this->set('results', $results);
        }
    }
    
    
}



?>

